Meeting notification and modification service

ABSTRACT

Techniques are described for providing a meeting notification and automatic modification service. A system may be configured to identify an appointment in a calendar application, identify a geographic location of the appointment, and identify, before the appointment time, a geographic location of a first participant of the appointment. Based on the geographic information, the system may identify a route extending from the geographic location of the first participant to the geographic location of the appointment, and may identify a travel time associated with the route. Based on the travel time and the appointment time, the system may determine whether the first participant is estimated to arrive at the appointment on time and, based on the determination, the system may send a message to participants of the appointment or dynamically reschedule the appointment.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of and claims the benefit of priorityto U.S. application Ser. No. 11/966,562, filed Dec. 28, 2007 now U.S.Pat. No. 7,869,941 (now allowed), which is a continuation-in-part ofU.S. patent application Ser. No. 11/618,069, filed Dec. 29, 2006, andwhich claims priority to U.S. Provisional Patent Application No.60/888,850, filed Feb. 8, 2007, U.S. Provisional Patent Application No.60/945,805, filed Jun. 22, 2007, U.S. Provisional Patent Application No.60/938,145, filed May 15, 2007, and U.S. Provisional Patent ApplicationNo. 60/947,278, filed Jun. 29, 2007. The contents of theabove-referenced applications are expressly incorporated herein byreference to their entireties.

TECHNICAL FIELD

This disclosure relates to meeting notification and modificationservice.

BACKGROUND

A user may populate an electronic calendar with appointments that takeplace at different locations. The electronic calendar may be, forexample, a Microsoft Outlook calendar, and may be manually programmed toinclude a date and time of appointments and locations associated withthe appointments.

SUMMARY

In one aspect, an appointment in a calendar application is identified,and a geographic location of the appointment is identified. Anappointment time at which the appointment is due to start and a currenttime are identified, and an amount of time remaining between the currenttime and the appointment time at which the appointment is due to startis identified. first participant of the appointment is identified at thecurrent time. A route extending from the geographic location of thefirst participant to the geographic location of the appointment isidentified, a travel time associated with the route is identified, andit is determined whether the travel time exceeds the amount of timeremaining until the appointment time. If it is determined that thetravel time exceeds the amount of time remaining, a communication issent.

Implementations may include one or more of the following features. Forexample, the travel time may be identified based on a current roadcondition or traffic flow, or the travel time may be identified based ona historic traffic flow. A modality of travel of the first participantto the geographic location of the appointment may be identified, and,based on the modality of travel, the travel time associated with theroute may be identified.

Also, a time threshold at which travel could be completed by adding thetravel time to the current time may be identified, and a later time toschedule the appointment may be determined based on the time threshold.The later time may be the same as or later than the time threshold. Theappointment time may be postponed to the later time to thereby enablethe first participant to arrive at the geographic location of theappointment. Based on the postponed appointment time, updatedappointment information may be sent to at least one participant of theappointment or another designee.

In some implementations, the first participant may be alerted that thefirst participant will be late to the appointment, and/or a secondparticipant, other than the first participant, may be alerted that thefirst participant will be late to the appointment. In theseimplementations, the second participant may be informed of thegeographic location of the first participant and the travel time of thefirst participant to the geographic location of the appointment, and thesecond participant may be informed that the appointment is being changedto account for the travel time.

In some examples, the calendar application of the first and secondparticipants may be accessed, and time availability of the first andsecond participants may be identified. In these examples, a mutuallyconvenient time for the first and second participants to participate ina rescheduled version of the appointment may be determined based on thetime availability of the first and second participants, and theappointment may be automatically rescheduled at the mutually convenienttime for the first and second participants. Further, in these examples,travel time may be accounted for in each of the first and secondparticipants' schedules, and the mutually convenient time may beselected from among multiple mutually convenient times based on, amongother factors, temporal proximity to geographic locations associatedwith adjacent appointments in one or both of the first and secondparticipants' calendars.

Also, one or more suggestions may be provided to the first participantto respond to the alert message. The one or more suggestions may includea suggestion to change the modality of travel used to compute the traveltime associated with the route, and/or a suggestion to send a message tothe second participant informing the second participant of an estimatedarrival time. Telephone contact information may be accessed for thesecond participant, and a suggestion may be provided to the firstparticipant to call the second participant. The suggestion may include atelephone number for the second participant determined based on theaccessed telephone contact information for the second participant.

In some implementations, a current geographic location of the firstparticipant may be identified. In these implementations, the currentgeographic location of the first participant may be identified based ona location-based technology utilized by a client device of the firstparticipant. The client device may utilize a global positioning system.Further, a notification window may be displayed at a specified time thatprecedes the appointment time by at least the travel time to thegeographic location of the appointment if it is determined that thetravel time does not exceed the amount of time remaining until theappointment time.

In another aspect, appointment information within a calendar applicationis dynamically updated. An appointment within a calendar application isidentified, and appointment times at which the appointment is due tostart and due to end are identified. It is identified that theappointment has been delayed for a certain amount of time, and at leastone remaining appointment within the calendar application is identified.A need to reschedule at least one remaining appointment is determinedbased on the certain amount of time that the appointment has beendelayed, it is confirmed with at least one participant of theappointment that the remaining appointment should be rescheduled. Theremaining appointment is dynamically rescheduled within the calendarapplication such that a starting time of the remaining appointment ispostponed by the certain amount of time.

Implementations may include one or more of the following features. Forinstance, participants of the remaining appointment may be informed ofthe rescheduling of the remaining appointment. Availability ofparticipants of the appointment at the postponed starting time may beconfirmed, and the participants of the appointment may be notified whenconflicts with the postponed starting time exist.

In a further aspect, travel conditions are monitored and changes totravel conditions associated with one or more participants traveling toan appointment are dynamically processed. An amount of time remaininguntil an appointment time at which an appointment is due to start isidentified, and a travel time corresponding to a route of travelassociated with one or more participants traveling to the appointment isidentified. Based on the identified amount of time remaining until theappointment time and the identified travel time corresponding to theroute, it is determined that the one or more participants traveling tothe appointment are estimated to arrive at the appointment on time.Travel conditions for the route of travel associated with the one ormore participants traveling to the appointment are monitored and achange in travel conditions is detected for the route of travelassociated with the one or more participants traveling to theappointment. In response to detecting the change in travel conditions,an updated amount of time remaining until the appointment time at whichthe appointment is due to start is determined, and a current location ofthe one or more participants is determined. Based on the currentlocation of the one or more participants, an updated travel timecorresponding to the route of travel associated with the one or moreparticipants traveling to the appointment is determined. Based on theupdated amount of time remaining until the appointment time and theupdated travel time corresponding to the route of travel, it isdetermined that the one or more participants traveling to theappointment are estimated to arrive at the appointment late based on thechanged travel conditions. In response to determining that the one ormore participants traveling to the appointment are estimated to arriveat the appointment late based on the changed travel conditions, acommunication is sent.

Implementations may include one or more of the following features. Forexample, one or more alternative routes may be identified for the one ormore participants traveling to the appointment, one or more alternativetravel times associated with each of the identified one or morealternative routes of travel may be determined, and it may be determinedwhether at least one of the one or more alternative travel times is lessthan the updated travel time. Conditioned on determining that at leastone of the one or more alternative travel times is less than the updatedtravel time, at least one of the one or more alternative routes oftravel for which the one or more alternative travel times is lowest isselected, and the one or more participants are alerted about theselected at least one of the one or more alternative routes of travel.Conditioned on determining that at least one of the one or morealternative travel times is not less than the updated travel time, theone or more participants are alerted about current travel conditions andare informed that the route of travel remains most efficient.

In some examples, an alert message may be sent to at least one of theparticipants of the appointment. The alert message may indicate that theone or more participants traveling to the appointment are estimated toarrive at the appointment late based on the changed travel conditions.Also, the appointment may be dynamically rescheduled based on theupdated travel time, and the participants of the appointment may benotified that the appointment has been dynamically rescheduled. One ormore subsequent appointments in a calendar of at least one of theparticipants of the appointment may be identified, and the one or moresubsequent appointments may be dynamically rescheduled based on thedynamically rescheduled appointment.

In yet another aspect, a participant is assisted with a calendarappointment when the participant diverges from a suggested route fortraveling to the calendar appointment. A current geographic location ofa participant traveling to an appointment scheduled in a calendarapplication used by the participant is determined, and informationindicative of the suggested route of travel is accessed. The geographiclocation of the participant is compared to one or more geographiclocations associated with the route of travel suggested for theparticipant, and, based on comparison results, it is determined whetherthe current geographic location of the participant traveling to theappointment differs more than a threshold from the one or moregeographic locations associated with the route of travel suggested forthe participant.

Conditioned on determining that the current geographic location of theparticipant traveling to the appointment differs more than the thresholdfrom the one or more geographic locations associated with the route oftravel suggested for the participant, an updated route of travel to theappointment is determined based on the current geographic location ofthe participant, and a travel time associated with the updated route oftravel to the appointment is determined. Based on the travel timeassociated with the updated route of travel, it is determined whetherthe participant traveling along the updated route is estimated to arriveat the appointment on time. Conditioned on determining that theparticipant traveling along the updated route is estimated to arrive atthe appointment on time, the participant is provided with informationrelated to the updated route of travel. Conditioned on determining thatthe participant traveling along the updated route is not estimated toarrive at the appointment on time, the participant is provided withinformation related to the updated route of travel, and a communicationis sent.

Conditioned on determining that the current geographic location of theparticipant traveling to the appointment does not differ more than thethreshold from the one or more geographic locations associated with theroute of travel suggested for the participant, it is determined whetherthe current geographic location of the participant is on the route.Conditioned on determining that the current geographic location of theparticipant is not on the route, information is provided to theparticipant related to how to return to the mute.

Implementations may include one or more of the following features. Forexample, an alert message may be sent to at least one of theparticipants of the appointment. The alert message may indicate that theparticipant traveling to the appointment is not estimated to arrive atthe appointment on time. The appointment may be dynamically rescheduledbased on the travel time associated with the updated route of travel tothe appointment, and the participants of the appointment may be notifiedthat the appointment has been dynamically rescheduled. One or moresubsequent appointments in a calendar of at least one of theparticipants of the appointment may be identified, and the one or moresubsequent appointments may be dynamically rescheduled based on thedynamically rescheduled appointment.

In another aspect, time associated with modality-specific incidentals totravel is accounted for in dynamically assisting a participant inhandling an appointment. An appointment in a calendar associated with aparticipant of the appointment is identified, and an appointment time atwhich the appointment is due to start and a current time are identified.An amount of time remaining between the appointment time at which theappointment is due to start and the current time is identified, and ageographic location of the appointment is identified. A currentgeographic location of the participant of the appointment is identified,and a route extending from the current geographic location of theparticipant to the geographic location of the appointment is identified.A modality of travel for traveling the route extending from thegeographic location of the participant to the geographic location of theappointment is determined, and a modality-based travel time associatedwith traveling the route extending from the geographic location of theparticipant to the geographic location of the appointment using thedetermined modality of travel is determined. Based on the determinedmodality of travel, at least one incidental travel time associated withtraveling the route extending from the geographic location of theparticipant to the geographic location of the appointment is determined,and a total travel time for traveling the route extending from thegeographic location of the participant to the geographic location of theappointment is determined based on the determined modality-based traveltime and the determined at least one incidental travel time. It isdetermined whether the total travel time exceeds the amount of timeremaining until the appointment time. Conditioned on determining thatthe total travel time exceeds the amount of time remaining until theappointment time, the participant is dynamically assisted in handlingthe appointment.

Implementations may include one or more of the following features. Forinstance, an automobile may be determined as the modality of travel fortraveling the route extending from the geographic location of theparticipant to the geographic location of the appointment, and a mappingdevice may be used to compute an automobile travel time associated withtraveling the route extending from the geographic location of theparticipant to the geographic location of the appointment using theautomobile. A walking travel time associated with walking from abuilding to the automobile prior or subsequent to traveling the routeextending from the geographic location of the participant to thegeographic location of the appointment using the automobile may bedetermined, and the walking travel time may be added to the automobiletravel time.

In some examples, an airplane may be determined as the modality oftravel for traveling the route extending from the geographic location ofthe participant to the geographic location of the appointment, and anair travel time associated with traveling the route extending from thegeographic location of the participant to the geographic location of theappointment using the airplane may be determined. A security travel timeassociated with going through security prior to boarding the airplanemay be determined, and the security travel time maybe added to the airtravel time.

Also, content associated with the appointment may be accessed, andinformation associated with a distance extending from the geographiclocation of the participant to the geographic location of theappointment may be accessed. The content associated with the appointmentand the information associated with the distance extending from thegeographic location of the participant to the geographic location of theappointment may be analyzed, and, based on the analysis, the modality oftravel for traveling the route extending from the geographic location ofthe participant to the geographic location of the appointment may beautomatically determined.

Further, the user may be able to select the modality of travel fortraveling the route extending from the geographic location of theparticipant to the geographic location of the appointment. Theappointment may be dynamically rescheduled based on the total traveltime. An alert message may be sent to at least one of the participantsof the appointment. The alert message may indicate that the participantis estimated to arrive at the appointment late.

In some implementations, multiple, different modalities of travel fortraveling the route extending from the geographic location of theparticipant to the geographic location of the appointment may bedetermined, and a modality-based travel time associated with travelingthe route extending from the geographic location of the participant tothe geographic location of the appointment may be determined using thedetermined multiple, different modalities of travel. In theseimplementations, at least one incidental travel time associated withtransitioning from a first modality of travel to a second modality oftravel may be determined.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIGS. 1A and 1B illustrate exemplary calendar application interfaces,configured to make a user of the calendar application able to identify atravel route extending from a geographic location of a first appointmentto a geographic location of a second appointment and to reserve, withinthe calendar application, a time block for a travel time associated withthe travel route.

FIG. 2 illustrates an exemplary process used to identify a travel routebetween already scheduled first and second appointments and to reserve,within a calendar application, a time block to account for a travel timeassociated with the travel route.

FIGS. 3A and 3B illustrate an exemplary process and an exemplary userinterface for soliciting and receiving, from the user, an addressassociated with an appointment.

FIG. 4 illustrates an exemplary process for identifying an amount ofunscheduled time between two appointments (e.g., a first appointment anda second appointment).

FIG. 5 illustrates an exemplary UI used to inform a user of anunscheduled time in the user's calendar.

FIG. 6 illustrates an exemplary UI that makes the user able to set areminder in calendar application.

FIG. 7 illustrates an exemplary UI used to allow a user to set an alertmessage, alerting the user of certain pre-defined conditions/events.

FIG. 8A illustrates an exemplary process used to alert a user about achange in current road conditions.

FIG. 8B illustrates an exemplary UI that may be generated as a result ofthe process illustrated in FIG. 8A and presented to the user to alert auser about a change in current road conditions.

FIG. 9A illustrates an exemplary process used to alert a user aboutconflicting appointments.

FIG. 9B illustrates an exemplary user interface that may be generated asa result of the process illustrated in FIG. 9A to alert a user aboutconflicting appointments.

FIG. 9C illustrates an exemplary process used for rescheduling anappointment at a mutually convenient time for the people attending theappointment.

FIG. 10A illustrates an exemplary process used to alert a user that theuser has deviated from an original route.

FIG. 10B illustrates an exemplary user interface that may be generatedas a result of the processes illustrated in FIG. 10A to alert a userthat the user has deviated from an original route.

FIG. 10C illustrates an exemplary user interface used to alert a userthat the user has deviated from an originally-calculated route by lessthan a threshold amount and to help the user to get back on theoriginally-calculated route.

FIG. 11 illustrates an exemplary process used to make able a user todetermine presence or absence of a conflict (e.g., absence of sufficienttravel time) between an already scheduled first appointment and a secondand new appointment that the user wishes to schedule at a particulartime.

FIGS. 12A-12D illustrate, within UIs 1200A-1200D, an exemplary sequenceof interactions between a calendar application and a user wishing toschedule one or more appointments using the process 1100 described withrespect to FIG. 11.

FIG. 12E illustrates an exemplary process used by s a calendarapplication to cancel and/or modify a travel time block upon receivingan indication from a user to cancel an appointment that is used toestimate the travel time block.

FIG. 13 illustrates an exemplary process used for alerting one or moreusers who are scheduled to participate in an appointment of possibledelay of at least one of the participants to the appointment.

FIG. 14 illustrates an exemplary process for identifying a travel timebased on modality of travel.

FIG. 15 illustrates an exemplary UI that is used to solicit, from aparticipant of an appointment, information regarding a modality oftravel.

FIG. 16 illustrates an exemplary alert interface used for alerting aparticipant of an appointment that he or she is not likely to arrive atthe appointment location on time.

FIG. 17 illustrates an exemplary alert interface showing options thatare presented to a participant of an appointment to avoid a schedulingconflict.

FIG. 18 illustrates an exemplary process used for reschedulingsubsequent appointments of a user based on the determination that one ofthe appointments of the user has been delayed.

DETAILED DESCRIPTION

Generating directions to geographic locations of appointments stored ina calendar application can be a complex undertaking. For example, a userwho maintains a calendar with appointments that take place at variouslocations may find it difficult or cumbersome to identify a travel routethrough the locations of the user's appointments. Particularly, the usermay find it time-consuming to manually look-up and print out directionsfor segments of a travel route before leaving, for example, the user'shome or work place.

To reduce the user's burden in identifying a travel route through thegeographic locations of the user's appointments, in one implementationdescribed generally with respect to FIGS. 1A-1B and 2-4, a calendarapplication is configured to allow the user to automatically generateappointment-to-appointment directions and to reserve a time blockbetween user's appointments to account for the travel time associatedwith a route extending from one appointment to the next. To this end,the calendar application includes a navigation component and furtherincludes a control option, manifested by an icon or a “setting,”selection of which results in generation a travel route between multipleappointments and further results in reservation of a time block withinthe user's calendar to account for the travel time associated with thetravel route.

To illustrate, assume that a user has two appointments within a calendarapplication (e.g., a first appointment and a second appointment) andthat the user selects, from within the calendar application, the controlicon. In response, the calendar application automatically (1) identifiesa travel route extending from a geographic location of the firstappointment to a geographic location of the second appointment, (2)identifies a travel time associated with the travel route, and (3)places a hold on the user's calendar to account for such travel time.Additionally, the calendar application may provide the user with areminder about the user's second appointment, taking into account thetravel time associated with the calculated route extending from thegeographic location of the first appointment to the geographic locationof the second appointment.

As such, depending on the required travel time, the user may bepresented with an option of selecting to travel immediately followingthe first appointment or just prior to the second appointment. In theabsence of sufficient time between the first and second appointments,the user is provided with an alert message at the time of scheduling thefirst and/or the second appointment, informing the user of the same, asmore fully described below with respect to FIGS. 9A-9C. The alertmessage may be in several forms. In one example, the alert message is inthe form of automatic e-mail to the user (or a person to whom the userdelegates the task of keeping the user's calendar), informing the userof the conflict. In another example, the alert message is provided as auser interface (“UI”) within the calendar application. In either case,the alert message provides the user with several options to allow theuser (or a person to whom the user delegates the task of keeping theuser's calendar) to account for such a conflict.

For instance, the alert message indicates to the user the anticipatedneed to leave the first appointment earlier than its scheduled endingtime or arriving at the second appointment later than its scheduledstarting time. Alternatively, the alert message may provide the userwith an option to reschedule the first and/or the second appointment. Tothis end and as described with respect to FIG. 9C, the calendarapplication may attempt to identify the availability of the participantsof the first appointment and/or the second appointment for reschedulingeither of the first and/or second appointments. In this manner, the useris presented with several options to resolve the conflict (e.g., absenceof sufficient travel time) between the first and second appointments.

In another implementation described generally with respect to FIG. 5,after taking into the account the travel time associated with the travelroute between the first and second appointments, the calendarapplication identifies that there is an unscheduled time period in theuser's calendar, and the calendar application informs the user of thesame. Along these lines, the calendar application may provide the userwith suggestions as to how the user should fill in the identified gapbetween the user's first and second appointments. This may help the userto more efficiently manage the unscheduled times within the user's dailycalendar.

In one example, the calendar application presents to the user a UI,allowing the user to identify a point of interest at which the user isinterested in spending the unscheduled time. In response, the useridentifies a point of interest (e.g., a coffee shop or a book store) anda geographic location associated therewith. The geographic location mayinclude a specific address associated with the point of interest.Alternatively, the geographic location may include a geographicarea/proximity within which the point of interest should be located. Ineither case, this implementation allows the user to perform ageographically limited search for a particular point of interest to fillin the identified gap between the user's appointments.

In another implementation described generally with respect to FIGS. 11and 12A-12D, instead of generating appointment-to-appointment directionsand reserving a time block to account for the travel time betweenappointments after the appointments are scheduled, the calendarapplication generates appointment-to-appointment directions and reservesa time block to account for the travel time between the appointments atthe time of scheduling an appointment. To illustrate, assume that theuser has scheduled a first appointment within the user's calendar andthe user wishes to schedule a second appointment within the user'scalendar. Upon indicating a desire to schedule the second appointment,the calendar notes the proposed time and location of the secondappointment.

Thereafter, the calendar application automatically identifies a routeextending between the first appointment and the second appointment andidentifies the travel time associated with the route. If the travel timeexceeds the time gap between the first and second appointments, thecalendar application alerts the user of the same before accepting thesecond appointment at the requested time. As such, the user immediatelyrealizes the conflict (e.g., absence of sufficient travel time betweenthe first and second appointments) and is allowed to schedule the secondappointment at another time to avoid such conflict. This minimizes thehassle of later recognizing such conflict and having to reschedule theappointment at that time.

However, if the travel time associated with the route does not exceedthe time gap between the two appointments, the calendar applicationschedules the second appointment at the requested time. Along theselines, if the user now wishes to schedule a third appointment betweenthe first and second appointments, the calendar application firstensures that the proposed timing of the third appointment does notpresent a conflict (e.g., absence of sufficient travel time between thefirst and third appointments or between the third and secondappointments) before accepting the third appointment.

In particular, the calendar application automatically identifies a firstroute extending from the geographic location of the first appointment tothe geographic location of the third appointment and identifies a firsttravel time associated with the first route. Similarly, the calendarapplication automatically identifies a second rout extending from thegeographic location of the third appointment to the geographic locationof the second appointment and identifies a second travel time associatedwith the second route. The calendar application then compares the firsttravel time with the time gap between the first and third appointmentsand similarly compares the second travel time with the time gap betweenthe third and second appointments.

If the first travel time exceeds the time gap between the first andthird appointments or the second travel time exceeds the time gapbetween the third and the second appointments, the calendar applicationalerts the user before accepting the third appointment at the requestedtime. As such, the user immediately realizes the conflict and is madeable to schedule, the third appointment at another time to avoid suchconflict.

Alternatively, if the first travel time does not exceed the time gapbetween the first and third appointments and the second travel time alsodoes not exceed the time gap between the third and second appointments,the calendar application schedules the third appointment at therequested time.

In some implementations, position of an attendee of an appointment isdetected. Based on the position of the attendee, current time/positionof the attendee is compared to time/location of a next calendarappointment or invite to identify situations in which the attendee willbe late to the appointment. Appropriate action may be taken when it isdetermined that an attendee likely will be late to the appointment. Forinstance, techniques may include rescheduling the appointment to a timewhen the attendee will arrive at the appointment. Dynamic changes totravel time (e.g., changes based on changing travel/road conditions ordiverging from a route) for one or more attendees may be accounted inrescheduling appointments.

In addition, time required by incidentals of travel may be accountedwhen determining whether dynamic changes need to be made to a calendarevent to which a traveler is scheduled to attend. Specifically, if anattendee is traveling to an appointment by automobile and the navigationsystem indicates that the attendee is 10 minutes away from theappointment location for a meeting that begins in 10 minutes, theattendee may be late given the need to park, walk from the car to themeeting, and clear security. Keywords such asairport/train/flight/car/security, and distances, may each help torecognize modalities of travel and appropriately account for incidentaltime required thereby.

FIGS. 1A and 1B illustrate exemplary calendar application interfaces,allowing a user of the calendar application to identify a travel routeextending from a geographic location of a first appointment to ageographic location of a second appointment and to reserve, within thecalendar application, a time block for a travel time associated with thetravel route. The user interfaces (“UIs”) of FIGS. 1A and 1B aregenerally similar. For ease of description, the implementation of FIG.1A is discussed in detail, and a description of redundant aspects of theimplementation of FIG. 1B is omitted for brevity.

FIG. 1A illustrates an exemplary UI 100A used for identifying a travelroute between multiple appointments and reserving, within a calendarapplication, a time block for a travel time associated with the travelroute. In particular, the UI 100A includes a calendar applicationinterface 110. The calendar application interface 110 identifies, withina particular day (e.g., Monday, Apr. 23, 2002), a first appointment 115,a second appointment 120, and a control icon 125. As shown, the firstappointment 115 is with “patent attorney Karl Renner at 1425 K Street,NW, Washington D.C. 20005.” And, the first appointment 115 is from 10:00am to 11:00 am. The second appointment 120 is with “patent examiner JoeSmith at the U.S. Patent and Trademark Office.” And, the secondappointment 120 is from 1:00 pm to 2:00 pm.

The calendar application interface 110 also includes the control icon125. The control icon 125 is structured and arranged for identifying atravel route extending from a geographic location of the firstappointment 115 to the geographic location of the second appointment 120and for reserving a time block, within a calendar application, toaccount for the travel time associated with the travel route. To thisend, the selection of the control icon 116 prompts the calendarapplication to (1) identify a route extending from the geographiclocation of the first appointment 115 to the geographic location of thesecond appointment 120, (2) identify a travel time associated with theroute, and (3) reserve a time block within the calendar application toaccount for the travel time, as more fully described below with respectto FIGS. 1B and 2.

FIG. 1B illustrates the calendar application interface 110 with thecontrol icon 125 being activated. As shown, the selection of the controlicon 125 prompts the calendar application to reserve a travel time block130 between the first appointment 115 and the second appointment 120. Inone implementation, the selection of the time block 130 provides theuser with directions from the geographic location of the firstappointment 115 to the geographic location of the second appointment120.

FIG. 2 illustrates an exemplary process 200 used to identify a travelroute between first and second appointments and to reserve, within acalendar application, a time block to account for a travel timeassociated with the travel route. In keeping with the previous exampleand for convenience, the calendar application described with respect toFIGS. 1A and 1B is referenced as performing the process 200. Inparticular, the process 200 involves the calendar application interface110, the first appointment 115, the second appointment 120, the controlicon 125, and the travel time block 130. Although the process 200 isdescribed below as being performed by the calendar application, itshould be understood that it can be performed by a navigationapplication. Alternatively or additionally, some of the actions withinthe process 200 may be performed by the calendar application and othersmay be performed by the navigation application. Alternatively oradditionally, the process 200 may be performed by an application thatacts as an interface between the navigation and calendar applications.

The process 200 includes the calendar application identifying a firstappointment in a calendar application (210) and identifying a geographiclocation of the first appointment (215). To do so, in oneimplementation, the calendar application references a location fieldassociated with the first appointment 115 to identify the locationassociated with the first appointment 115. Alternatively oradditionally, the calendar application may reference other fieldsassociated with the first appointment 115 and may search for key wordsidentifying an address. For example, the calendar application may searchfor a zip code, city, and/or state name to identify an address. Inkeeping with the previous example described with respect to FIGS. 1A and1B, the calendar application identifies that the geographic location ofthe first appointment 115 is at “1425 K Street, NW, Washington D.C.20005.”

Similarly, the process 200 includes the calendar application identifyinga second appointment in the calendar application (220) and identifyingthe geographic location of the second appointment (225). Identifying thesecond appointment may include identifying an existing appointmentalready scheduled within a calendar application. Alternatively oradditionally, identifying the second appointment may include receiving arequest to schedule a second appointment within a calendar application.The calendar application uses the above-described techniques to identifythe geographic location of the second appointment 120. In doing so, thecalendar application realizes that the geographic location of the secondappointment 120 is U.S. Patent and Trademark Office without a specificaddress. As such, the calendar application identifies a need foridentifying an address associated with the U.S. Patent and TrademarkOffice. To this end, the calendar application may use an exemplaryprocess 300A illustrated by FIG. 3A and an exemplary UI 300B illustratedby FIG. 3B to determine the address associated with the U.S. Patent andTrademark Office.

Process 300A begins with determining that the user has not specified anaddress corresponding to an appointment location (310). To do so, in oneimplementation, the calendar application searches the calendarapplication for the address associated with the appointment. For exampleand as noted above, the calendar application may reference a locationfield associated with the second appointment 120 to determine theaddress for the second appointment 120. Alternatively or additionally,the calendar application may reference other fields associated with thesecond appointment 120 and may search for key words (e.g., a zip code,city, and/or state name) identifying an address. In the absence of suchinformation, the calendar application concludes that the user has notspecified an address for the appointment location.

Upon identifying that the user has not specified an address for theappointment location, the calendar application attempts to determine theaddress associated with the appointment location (320). To do so, thecalendar application may solicit the user for such information. In oneexample, the calendar application presents the UI 300B to the user,which includes an “address” icon, allowing the user to specify anaddress for the appointment location (e.g., U.S. Patent and TrademarkOffice). In one example, the selection of the “address” icon launchesanother UI, allowing the user to specify the address for theappointment. The user may manually enter the address in the UI or mayimport the address into the UI from the user's profile. For example, theuser's profile may include an entry for “U.S. Patent and TrademarkOffice” that specifies the address for “U.S. Patent and TrademarkOffice.” The profile may include the user's contact/address list.Alternatively, the calendar application may automatically determine theaddress for the U.S. Patent and Trademark Office without having the userto interact with the UI 300B. For example, the calendar applicationautomatically obtains the address for U.S. Patent and Trademark Officefrom the user's profile.

Alternatively, the calendar application may access an online resource(e.g., Internet) to perform a web search or a database search todetermine the address for the U.S. Patent and Trademark Office. In thismanner and in one specific example, after performing the search, thecalendar application identifies multiple addresses associated with theappointment.

To ensure the correct address is used, the calendar application maypresent another UI to the user and may request that the user selectsfrom among the multiple addresses associated with the appointmentlocation. Upon identifying the address, the calendar application allowsthe user to obtain directions to the appointment location (320). To thisend, the calendar application includes a directions/mapping selectionportion 325 in the UI 300B, selection of which provides the user withdirections and/or maps to the geographic location of the secondappointment 120 from the geographic location of the first appointment115.

Along these lines, the process 200 includes the calendar applicationidentifying a route extending from the geographic location of the firstappointment to the geographic location of the second appointment (230).To do so, in one implementation, the calendar application has a built innavigation component, allowing it to generate directions from thegeographic location of the first appointment 115 to the geographiclocation of the second appointment 120. In another implementation and asnoted above, the calendar application communicates the locationinformation for each appointment to a navigation application that isphysically or logically distinct from the calendar application andrequests, from the navigation application, that it identifies the travelroute and the travel time associated therewith. The U.S. patentapplication Ser. No. 11/618,069, filed on Dec. 29, 2006 and entitled“Communicating Appointment And/Or Mapping Information Among A CalendarApplication And A Navigation Application,” describes in detail conceptsthat effect communications of appointment information from a calendarapplication to a navigation application for generating a travel routeand a travel time associated therewith. The entire content of thisapplication is incorporated herein by reference.

After identifying the travel route, the calendar application identifiesa travel time associated with the route (235). The travel time may takeinto account the current road conditions and it may be updated as thecurrent road conditions changes, as described in more detail below withrespect to FIGS. 8A and 813. Alternatively or additionally, the traveltime may take into account the historic traffic flow.

Moving forward, the calendar application determines an amount ofunscheduled time between the first and second appointments (240) todetermine whether the amount of unscheduled time can sustain the traveltime. To do so, in one implementation, the calendar application uses anexemplary process 400 illustrated by FIG. 4.

FIG. 4 illustrates an exemplary process 400 for identifying an amount ofunscheduled time between two appointments (e.g., the first appointmentand the second appointment). The process 400 includes the calendarapplication identifying an ending time of the first appointment (410)and identifying a starting time of the second appointment (415). To doso, in one implementation, the calendar application references a timefield within the calendar application to identify the time during whichthe appointment is scheduled to take place. Alternatively oradditionally, the calendar application may reference other fieldsassociated with the first and second appointments and may search for keywords identifying time of each appointment. For example, the calendarapplication may search for key words, such as “starting time,” “endingtime,” “from 10:00 am to 11:00 am,” and other possible texts indicativeof the time of the appointment.

In one scenario, the calendar application determines that the user hasfailed to identify a start or end time associated with either or both ofthe first and second appointments. In such scenario, the calendarapplication may use a UI (not shown) to solicit from the user the timeassociated with the appointment.

After identifying the ending time associated with the first appointmentand the starting time associated with the second appointment, thecalendar application subtracts the ending time of the first appointmentfrom the starting time of the second appointment to determine the amountof unscheduled time (420).

After identifying the amount of unscheduled time, the calendarapplication determines whether the amount of unscheduled time equals orexceeds the travel time (245). If so (250, yes), the calendarapplication reserves, within the calendar application, a time block toaccount for the travel time (255).

Upon determining that the amount of unscheduled time exceeds the traveltime, in one implementation, the calendar application determines whetherthe amount of unscheduled time exceeds the travel time by more than athreshold amount. And, if it is determined that the amount ofunscheduled time exceeds the travel time by more than the thresholdamount, the calendar application provides a message that informs a userof the unscheduled time period. Along these lines, the calendarapplication also may provide the user with suggestions as to how theuser should fill in the identified gap between the user's first andsecond appointments. This may help the user to more efficiently managethe unscheduled times within the user's daily calendar.

FIG. 5 illustrates an exemplary UI 500 used to inform the user of theunscheduled time in the user's calendar. The user interface 500 alertsthe user that “even after taking into account the travel time from thefirst appointment to the second appointment, there remains anunscheduled time period in [the user's] calendar between the first andsecond appointments.” And, the UI 500 prompts the user to request moreinformation, such as, for example, whether the user wishes to spend moretime at the preceding or subsequent appointment, to stop at anotherplace (e.g., a gas station), to start traveling toward the nextappointment, or to do “other” activities, such as to go to a coffee shopand/or a grocery store.

In particular, the UI 500 includes an option that allows a user tosearch for a particular type or point of interest (e.g., a coffee shop)near a user-identified destination. For example, by selecting (e.g.,“clicking on”) the “destination” link, the UI 500 generates another UI(not shown) that allows the user to specify a geographic location forthe coffee shop. In one implementation, the geographic location for thecoffee shop includes a specific address. In another implementation, thegeographic location includes a parameter/proximity within which thepoint of interest should be located. For example, the user may draw ageographical designation proximate to or around the travel route,thereby indicating an interest in the point of interest located withinthe parameter. As such, these options allow the user to perform a morelimited geographical search for a particular point of interest.

In another slightly different implementation, after the user identifiesthe point of interest, the calendar application automatically searchesand identifies a geographic location for the point of interest withinthe vicinity of the travel route extending from the geographic locationof the first appointment to the geographic location of the secondappointment. Along these lines, the calendar application may provide theuser with a UI (not shown) that displays a travel route extending fromthe geographic location of the first appointment to the geographiclocation of the second appointment, identifies the geographic locationsassociated with the point of interest along the route, and requests,from the user, to select, from among the identified geographiclocations, a location for the point of interest.

Referring again to FIG. 2, if it is determined that the travel timeexceeds the amount of unscheduled time (250, no), the calendarapplication alerts the user of the conflict and provides the user withone or more suggestions to resolve the conflict. In one example, thecalendar application presents to the user a UI, providing one or moresuggestions to make able the user to respond to the alert message. Theprocess associated with generating an alert message is more fullydescribed below with respect to FIG. 9A and the UI providing the userwith one or more suggestions is more fully described below with respectto FIG. 9B.

In one implementation, the calendar application is configured to allowthe user to set a travel time reminder, reminding the user to leave theuser's current location at a specified time that precedes the startingtime of the appointment by at least the travel time to the appointment.In keeping with the previous example described with respect to FIGS. 1Aand 1B, the calendar application is configured to allow the user to seta travel time reminder, reminding the user to leave at a specified timethat precedes the starting time (e.g., 1:00 pm) of the secondappointment 120 by at least the travel time (e.g., 60 minutes) to thesecond appointment 120.

FIG. 6 illustrates an exemplary UI 600 that makes able the user to setsuch reminders within a calendar application. The UI 600 includes areminder selection portion 610. The reminder selection portion 610includes one or more options selection of which instruct the calendarapplication to remind the user at a “specified time” in advance of theallocated travel time block to arrive at a geographic location of thesecond appointment on time. In one example, the user's selection of thereminder selection portion 610 launches another UI (not shown), allowingthe user to set the “specified time.” For example, the user may requestto be reminded about an appointment 10 minutes before the time the usershould leave the user's present location to arrive at the appointmentlocation on time. The reminder selection portion 610 also allows theuser to specify the manner in which the reminder should be sent to theuser. As shown in FIG. 6, the user may choose to receive the remindervia, for example, via an audio call placed to a telephone, an email, aninstant message, and/or “other” options, such as short message service(“SMS”).

The calendar application may be configured to allow the user to setalert messages, alerting the user about different events. In onespecific example, the user may wish to set an alert message, alertingthe user if the travel time associated with the calculated route betweenthe first appointment and the second appointment changes due to a changein the current road conditions. In another example, the user may wish toset an alert message, alerting the user about conflicting appointments.In keeping with the previous example, the timing of the first and secondappointments that previously did not conflict with each other even aftertaking into account travel time from the first appointment to the secondappointment, may now present a conflict due to the new calculated traveltime and the alert message informs the user of the same. In yet anotherexample, the user may set an alert message, alerting the user of anunscheduled within the user's calendar application. In yet anotherexample, the user may set an alert message, providing the user withupdated directions and an updated travel time if the user deviates fromthe previously calculated route.

FIG. 7 illustrates an exemplary UI 700 used to allow the user to set analert message, alerting the user of certain pre-definedconditions/events. The UI 700 includes an alert selection portion 710.As shown, the alert selection portion 710 includes four user-selectablealert options. The first alert option, described below in more detailwith respect to FIGS. 8A and 8B, alerts the user if current roadconditions change and may suggest an alternate route to the user thatavoids problematic routes associated with the change in the roadconditions. The second alert option, described below in more detail withrespect to FIGS. 9A-9C, alerts the user about conflicting appointments(e.g., absence of sufficient travel time between the appointments) andmay suggest possible options to help the user avoid the conflictingappointments.

The third alert option, described above in more detail with respect toFIG. 5, alerts the user about a time period that is unscheduled betweenthe user's appointments and may suggest an alternate schedule to helpthe user to more efficiently use the unscheduled time slot. The fourthalert option, described below with respect to FIGS. 10A and 10B, alertsthe user if the user deviates from the previously calculated route andprovides the user with new directions based on the user's presentlocation. More particularly, the user's selection of the fourth alertoption instructs the calendar application to update the calculated routebased on real time information, such that a user deviating from theoriginal route may receive an updated route (an updated effect on acalendar of appointments) to the user's next appointment location.

FIG. 8A illustrates an exemplary process 800A that a calendarapplication uses to alert a user about a change in current roadconditions. In keeping with the previous example and for convenience,the calendar application described with respect to FIGS. 1A and 1B isreferenced as performing the process 800A. In particular, the process800A involves the first appointment 115, the second appointment 120, thecontrol icon 125, and the travel time block 130. Although the process800A is described below as being performed by the calendar application,it should be understood that it can be performed by a navigationapplication. Alternatively or additionally, some of the actions withinthe process 800A may be performed by the calendar application and othersmay be performed by the navigation application. Alternatively oradditionally, the process 800A may be performed by an application thatacts as an interface between the navigation and calendar applications.

Moving forward with the calendar application performing the actions ofthe process 800A, the calendar application may use the process 800A, forexample, in response to the user's selection of the first alert optionin the alert selection portion 710 illustrated by FIG. 7. Alternativelyor additionally, the calendar application may use the process 800A inresponse to the user's selection of the control icon 125. In eithercase, the process 800A includes the calendar application monitoring theroad conditions between the user's appointment locations (805). Forexample, the calendar application monitors the road conditionsassociated with the previously calculated travel route extending fromthe geographic location of the first appointment 115 to the geographiclocation of the second appointment 120. To do so, in one implementation,the calendar application regularly contacts a server that includestraffic data to obtain current road conditions between the user'sappointments. To minimize the burden on the server initially, thecalendar application may contact the server less frequently and, as itgets closer to the time the user has to leave the geographic location ofthe first appointment 115 to arrive on time at the geographic locationof the second appointment 120, the calendar application contacts theserver more often to obtain more up to date information.

Regardless, the calendar application determines that there is a changein the road conditions (810). The change in the road conditions mayinclude events such as traffic, accidents, rush hours, construction,road blocks, and/or adverse weather conditions resulting in a slowerrecommended speed limit. The calendar application identifies the updatedtravel time associated with the travel route under the current roadconditions (815). The calendar application then compares the updatedtravel time under the changed road conditions with the travel time undernormal conditions to determine if they differ by more than a thresholdamount (820). For example, the calendar application compares the updatedtravel time with the travel time specified in the travel time block 130.If they do not differ by more than the threshold amount (820, no), thecalendar application alerts the user about the current road conditionsand the updated travel time under such conditions (825). In one example,the calendar application updates the travel time block 130, within thecalendar application interface 110, to account for the updated traveltime. If the change in travel time is more than the threshold amount(820, yes), the calendar application identifies one or more alternativeroutes that are less or unaffected by the adverse road conditions andthe travel time associated therewith (830). In another implementation,the calendar application informs the user of the adverse condition andsolicits from the user as to whether the user wishes to identify analternative route. Upon receiving an indication from the user that theuser wishes to identify an alternative route, the calendar applicationidentifies one or more alternative routes or determines that analternative route that is less or unaffected by the adverse roadconditions does not exist.

To identify an alternative route, the calendar application attempts tofind a route that avoids the adverse events (e.g., accidents) resultingin the change in the road conditions for the previously calculatedroute. The calendar application checks to determine whether the traveltime associated with any of the alternative routes is less than thetravel time associated with the route with the adverse conditions (835).If not (835, no), the calendar application alerts the user about thecurrent road conditions and informs the user that their current routeremains the most efficient travel route (825).

If the travel time associated with any of the alternative routes is lessthan the travel time associated with the original route facing theadverse road condition (835, yes), the calendar application identifiesat least one alternative route with a travel time that is lowest (e.g.,a route with the least travel time). The calendar application mayidentify the at least one alternative route with a travel time that islowest by comparing the travel times of the identified alternativeroutes and selecting, from among the identified alternative routes, thealternative route with the lowest travel time. The calendar applicationmay select more than one alternative route when two routes have the sametravel time that is also the lowest travel time or when the calendarapplication is configured to present options to the user by selectingmultiple routes (e.g., the two alternative routes, from among theidentified alternative routes, with the two lowest travel times). Inresponse to identifying the at least one alternative route with a traveltime that is lowest, the calendar application alerts the user of thechange in the current road conditions and displays to the user the oneor more identified alternative routes, informing the user that thealternative routes will result in an increase in travel time compared tothe initial travel schedule, but also informing the user that they willdecrease travel time compared to travel time on the current route underthe current road conditions (860).

To alert the user, the calendar application may display to the user a UIinforming the user of the time, present location, and the adversecondition, and suggesting that the user takes a different route to theuser's next appointment location. Alternatively or additionally, thecalendar application may store the directions associated with the newroute in the travel time block 130 for later access by the user and mayupdate the travel time associated with the new route.

FIG. 8B illustrates an exemplary UI 800B the calendar application usesto alert a user about a change in current road conditions. The UI 800Binforms the user of the present time (e.g., 11:00 am), the user'spresent location (e.g., the first appointment location), and the user'snext destination (e.g., the second appointment location). As shown inFIG. 8B, the UI 800B also informs the user that if the user were able totravel under normal conditions, the user could expect to arrive at thesecond appointment location in 60 minutes. However, problematicconditions adversely affect the ability of the user to achieve thatestimated travel time. In particular, the alert message indicates that“[t]here is heavy traffic due to an accident on the I-60” and now itwill take the user 3 hours to arrive at the second appointment location.

In one implementation, to estimate the new travel time, the calendarapplication compares the travel time of the original route under thecurrent mad conditions with the travel time of an alternative route andsuggests to the user the route with the minimum travel time. For exampleand as shown in FIG. 8B, the calendar application determines thealternative route has the minimum travel time (e.g., 2 hours) andsuggests taking the alternative mute. The calendar application alsocommunicates to the user to leave immediately if the user wishes toarrive at the second appointment location on time. The UI 800B alsomakes able the user to view the alternative route via, for example,selecting the “view” icon. Alternatively or additionally, the user canview the alternative route via, for example, selecting the travel timeblock 130. It is to be understood that other alternative may bepresented to the user. For example, the user may be presented with anoption to postpone and/or cancel the second appointment and inform theparticipants of the second appointment of the same.

FIG. 9A illustrates an exemplary process 900A used for generating analert message informing the user of conflicting appointments. Theactions performed by the process 900A are similar to some of the actionsperformed by the process 200 illustrated by FIG. 2. In keeping with theprevious example and for convenience, the calendar application describedwith respect to FIGS. 1A and 1B is referenced as performing the process900A. In particular, the process 900A involves the first appointment115, the second appointment 120, the control icon 125, and the traveltime block 130. Although the process 900A is described below as beingperformed by the calendar application, it should be understood that itcan be performed by a navigation application. Alternatively oradditionally, some of the actions within the process 900A may beperformed by the calendar application and others may be performed by thenavigation application. Alternatively or additionally, the process 900Amay be performed by an application that acts as an interface between thenavigation and calendar applications.

The process 900A may be used, for example, in response to the user'sselection of the control icon 125. Alternatively or additionally, theprocess 900A may be used, for example, in response to the user'sselection of the second alert option in the alert selection portion 710illustrated by FIG. 7. In either case, the process 900A includes thecalendar application determining the amount of unscheduled time betweenthe first appointment 115 and the second appointment 120 (910A). Theaction (910A) is similar to action (240). To this end and as more fullydescribed above with respect to process 400 illustrated by FIG. 4, thecalendar application identifies that the amount of unscheduled time isabout 2 hours. The calendar application then identifies the travel timefor the route extending from the geographic location of the firstappointment 115 to the geographic location of the second appointment 120(915A). The action (915A) is similar to action (235). For example, thecalendar application identifies that the travel time is 2 hours and 30minutes.

The calendar application then compares the travel time with the amountof unscheduled time (920A) and based on the comparison, determines ifthe travel time exceeds the amount of unscheduled time (925A). Theactions (920A) and (925A) illustrate action (245) in more detail. Inkeeping with the above-described example, the calendar applicationidentifies that the travel time exceeds the amount of unscheduled timeby 30 minutes. Accordingly, the calendar application alerts the user ofthe conflict and provides the user with suggestions to avoid theconflict (930A). The action (930A) is similar to action (255). Forexample, the suggestions include ending the first appointment 115 soonerthan the scheduled ending time and/or canceling or rescheduling thefirst or the second appointment 115, 120. The alert and the suggestionsmay be presented to the user via a UI.

FIG. 9B illustrates an exemplary UI 900B used to alert a user aboutconflicting appointments. The UI 900B may be presented to the userautomatically as a part of a regular morning update schedule, alertingthe user if there are conflicting appointments in the user's calendar.Alternatively or additionally, the UI 900B may be presented to the userat the time the user selects (e.g., clicks on) the control icon 125. TheUI 900B notes that the first appointment at 10:00 am is supposed to lastfor 60 minutes and the second appointment is at 12:00 pm. The UI 900Balso notes that “it takes 120 minutes to arrive at the secondappointment location from the first appointment location plus anapproximate 10 minutes to get from the car to the meeting.”

The UI 900B displays to the user several options to address thisconflict. The first option allows the user to spend less time at thefirst appointment. The second option allows the use to cancel orreschedule the “second appointment”. The third option informs thecalendar application of the user's preference to arrive late to thesecond appointment. Other attendees then may be notified that the userwill be arriving late. The UI 900B may be interactive, such that theuser is allowed to cancel or reschedule another appointment instead ofthe second appointment. For example, the user's selection of the “secondappointment,” launches another UI (not shown), allowing the user toselect an appointment to be canceled or rescheduled.

Upon identifying that the user wishes to reschedule the secondappointment 120, the calendar application may identify the participantsof the second appointment 120 and their time availability to reschedulethe second appointment 120 at a mutually convenient time for theparticipants of the second appointment 120. FIG. 9C illustrates anexemplary process 900C used for rescheduling the appointment 120 at amutually convenient time for the people attending the appointment 120.

Process 900C includes the calendar application identifying participantsof the second appointment 120 (910C). In one example, the calendarapplication searches participant field to identify the participants ofthe second appointment 120. After identifying the participants, thecalendar application identifies time availability of each of them(915C). To do so, in one implementation, the calendar applicationremotely accesses, over a wireless network, a calendar application ofeach of the participants to identify their time availability. In anotherimplementation, the calendar application sends an e-mail to each of theparticipants and requests from each of them to identify his/her timeavailability. In either case, based on the time availability of theparticipants, the calendar application reschedules the secondappointment 120 at the mutually convenient time for the participants ofthe second appointment 120 (920C) and informs the participants of thesame.

FIG. 10A illustrates an exemplary process 1000A used to alert a userthat the user has deviated from an original route. In keeping with theprevious example and for convenience, the calendar application describedwith respect to FIGS. 1A and 1B is referenced as performing the process1000A. In particular, the process 1000A involves the first appointment115, the second appointment 120, the control icon 125, and the traveltime block 130. Although the process 1000A is described below as beingperformed by the calendar application, it should be understood that itcan be performed by a navigation application. Alternatively oradditionally, some of the actions within the process 1000A may beperformed by the calendar application and others may be performed by thenavigation application. Alternatively or additionally, the process 1000Amay be performed by an application that acts as an interface between thenavigation and calendar applications.

The process 1000A may be used, for example, in response to the user'sselection of the fourth alert option in the alert selection portion 710illustrated by FIG. 7. Alternatively or additionally, the process 1000Amay be used, for example, in response to the user's selection of thecontrol icon 125. In either case, the process 1000A includes thecalendar application, including a navigation component, identifying thepresent location of the client device. In one implementation, thecalendar application automatically determines the present location ofthe user using location providing technology implemented in the user'sclient device. If the client device is equipped with multiple locationproviding technologies, the calendar application may use the technologythat provides the most accurate information about the present location.

In one example, the client device includes a mobile device that isGPS-enabled, and the calendar application automatically determines thepresent location of the user based on the GPS position of the clientdevice. In another example, the present location of the user isautomatically determined by registering the client device with a host(e.g., a Session Initiation Protocol (“SIP”)) server. The client devicemay provide information to the host that is used to derive locationinformation. For example, the host may derive location information basedon how the client device is accessing the network (e.g., as identifiedby source IP address or another packet identifier).

In yet another alternative, the present location of the user isautomatically determined from the user's profile. For example, the userhas associated profile or contact information indicating a predeterminedhome and/or office location. In one specific example, the user of aclient office computer has previously stored the location of the user'soffice in the user's profile. Thus, the navigation application uses theuser's profile to determine the office location.

Upon determining the current location, the calendar applicationreferences the originally calculated route (1010) and checks todetermine whether the current location of the user differs more than athreshold amount from the originally-calculated route (1015). If not(1015, no), the calendar application checks to determine whether thecurrent location is on the route (1020) and if so (1020, yes), thecalendar application continues to monitor the current location of theuser to account for the possible departure of the user from the route.If, however, the current location of the user is not on the route (1020,no), the calendar application shows the user how to return to theoriginally-calculated route (1025). FIG. 10C illustrates a UI 1000C thatmay be used to help the user to return to the originally-calculatedroute. After showing the user how to return to the originally-calculatedroute, the calendar application waits a period of time (e.g., apredetermined and configurable period of time, a time determined basedon the distance from the originally-calculated route, etc.) or until theuser has returned to the originally-calculated route, and continues tomonitor the current location of the user to account for departure of theuser from the originally-calculated route (1028).

If the current location of the user does differ more than a thresholdamount from the originally-calculated route (1015, yes), the calendarapplication alerts the user (1030). In one example, the threshold is 1mile from the originally calculated mute. If the current location of theclient device differs more than the threshold amount from the originallycalculated route, the calendar application alerts the user (1030) andprovides the user with directions to the user's next appointmentlocation from the current location of the client device (1035). AlthoughFIG. 10A illustrates that actions (1030 and 1035) are performedserially, it is possible that actions (1030 and 1035) can be performedsimultaneously.

The calendar application may use a UI, such as the one shown in FIG.10B, to alert the user and provide the user with updated directions. Asdescribed further below with respect to FIG. 10B, the alert message alsoinforms the user of the time and location of the user's next appointmentand the travel time to the next appointment location based on the user'spresent location.

FIG. 10B illustrates an exemplary UI 1000B used to alert a user that theuser has deviated from an original route. In particular, the alertmessage notes to the user that “it is currently 11:00 am, and it seemsyou have deviated from the original route. You are presently located at1100 F St., NW, Washington D.C. 20005.”

The alert message also informs the user of the time and location of theuser's next appointment (e.g., the second appointment 120) and thetravel time (e.g., 30 minutes) to the next appointment location based onthe present location of the user. The alert message also allows the userto view directions from the present location to the next appointment. Inone implementation, the calendar application determines whether the userarrives on time at the user's next appointment based on the new traveltime and informs the user in either case. If the user is going to belate to the appointment based on the new travel time, the calendarapplication may present the user with one or more suggestions to avoidsuch conflict. For example, the calendar application may present theuser with options similar to those described with respect to FIG. 9B.

FIG. 10C illustrates an exemplary UI 1000C used to alert the user thatthe user has deviated from the originally-calculated route by less thana threshold amount and helps the user to get back on theoriginally-calculated route. In particular, the alert message notes tothe user that “it is currently 11:00 am, and it seems you have deviatedfrom the originally calculated route by less than a threshold amount.”In keeping with the example described with respect to FIG. 10A, the userwho is presented with the UI 1000C may have deviated from the route byless than a threshold amount (e.g., 1 mile). Regardless, the alertmessage 1000C allows the user to view directions in order to get back onthe originally-calculated route.

Other implementations are also contemplated. For example, instead of orin addition to allowing the user to a reserve, within a calendarapplication, a time block for the travel time between multipleappointments after the multiple appointments have already beenscheduled, as described with respect to FIG. 2, the user is allowed toreserve, within the calendar application, a time block for such traveltime during scheduling of an appointment. As such, in thisimplementation, the user immediately realizes the conflict (e.g.,absence of sufficient travel time between appointments) at the time ofscheduling an appointment, and the user is allowed to schedule theappointment at another time to avoid such conflict. This minimizes thehassle of later recognizing such conflict and having to reschedule thealready scheduled appointment at that time.

FIG. 11 illustrates an exemplary process 1100 used to make able a userto determine presence or absence of a conflict (e.g., absence ofsufficient travel time) between an already scheduled first appointmentand a second and new appointment that the user wishes to schedule at aparticular time. In keeping with the previous example and forconvenience, the calendar application described with respect to FIGS. 1Aand 1B is referenced as performing the process 1100. In particular, theprocess 1100 involves the calendar application interface 110, the firstappointment 115, the second appointment 120, the control icon 125, andthe travel time block 130.

Although the process 1100 is described below as being performed by thecalendar application, it should be understood that it can be performedby a navigation application. Alternatively or additionally, some of theactions within the process 1100 may be performed by the calendarapplication and others may be performed by the navigation application.Alternatively or additionally, the process 1100 may be performed by anapplication that acts as an interface between the navigation andcalendar applications.

The process 1100 includes many of the actions described with respect tothe process 200. As such, for the sake brevity, only the actions thatare different is described here in more detail. These actions includeactions (1110, 1150, 1155, and 1160). To illustrate, the process 1100includes the calendar application receiving, from a user, a request toschedule, within a calendar application, a new (second) appointment 120at a particular time (1110). To formulate such a request, in oneimplementation, the user clicks on the time windows appearing on thecalendar application interface 1110. This results in generation of a UI,similar to the one shown and described below with respect to FIG. 12C,soliciting, from the user, to specify the time, date, subject, andlocation of the second appointment 120. After identifying thisinformation, the user may save the second appointment 120 within thecalendar application by selecting the “save and close” icon.

Before saving the second appointment 120 into the calendar application,however, the calendar application may first determine whether theproposed second appointment present a conflict (e.g., absence ofsufficient travel time) with an already scheduled first appointment 115.If not (1145, yes), the calendar application schedules the secondappointment 120 at the proposed particular time (1150). Additionally,the calendar application also reserves a travel time block within thecalendar application to account for the travel time (1155). In oneimplementation, the calendar application places the travel time blockimmediately before the starting time of the second appointment. Inanother implementation, the calendar application places the travel timeblock immediately after the ending time of the first appointment. In yetanother implementation, the calendar application presents to a user a UI(not shown), allowing the user to select where the time block should belocated between the first and second appointments. In either case, theuser may have the option of removing and/or adjusting the travel timeblock placed between the first and second appointments.

However, if it is determined that the amount of travel time exceeds theamount of unscheduled time (1145, no), the calendar application alertsthe user of the conflict and provides the user with suggestions beforeor at the time of saving the second appointment 120 into the calendarapplication at the particular time (1160). In one example, the calendarapplication presents to the user a UI, providing the user with one ormore suggestions in resolving the conflict, as described above in moredetail with respect to FIGS. 9A-9C. In response, the user may simplyselect to schedule the second appointment at another time that does notpresent such a conflict.

FIGS. 12A-12D illustrate, within the UIs 1200A-1200D, an exemplarysequence of interactions between a calendar application and a userwishing to schedule an appointment using the process 1100 described withrespect to FIG. 11. FIG. 12A illustrates an exemplary UI 1200A enablinga user to perceive, within the calendar application, an alreadyscheduled appointment and to schedule a new appointment in the absenceof a conflict (e.g., absence of sufficient travel time) between thealready scheduled appointment and the new appointment.

The UI 1200A includes a calendar application interface 1210. Thecalendar application interface 1210 includes, within a particular day(e.g., Monday, Apr. 23, 2002), an already scheduled first appointment1215. As shown, the first appointment 1215 is with “patent attorney KarlRenner at 1425 K Street, NW, Washington D.C. 20005.” Thereafter, thecalendar application receives, from the user, a request to schedule asecond and anew appointment 1220, which appears to be with “a patentexaminer Joe Smith at U.S. Patent and Trademark Office.” As shown, inone implementation, the request is in the form of drag and dropoperation.

In particular, the user drags, from another application and into thecalendar application interface 1210, the information about the secondappointment 1220 and drops, within lie calendar application interface1210, the information about the second appointment 1220. In oneparticular example, the user drops this information within a particulartime window (e.g., between 1:00 pm to 2:00 pm window). In anotherimplementation described generally with respect to FIG. 12C, instead ofusing the drag and drop operation, the user simply selects (e.g., clickson), for example, “new appointment” icon within the calendar applicationinterface 1210 to schedule the second appointment 1220 and provides thecalendar application with the information regarding the secondappointment 1220.

In either case, after receiving the information about the secondappointment 1220 and before or at the time of accepting/scheduling thesecond appointment 1220, the calendar application uses the exemplaryprocess 1100 to determine whether the proposed timing of the secondappointment 1220 presents a conflict (e.g., absence of sufficient traveltime) with the already scheduled first appointment 1215. If not, thecalendar application schedules the second appointment 1220 within thecalendar application interface 1210 and also reserves, within thecalendar application interface 1210, a travel time block associated withthe travel time of the route extending between the first appointment1215 and the second appointment 1220, as shown by FIG. 12B.

FIG. 12B illustrates an exemplary UI 1200B with the second appointment1220 and the travel time block 1230 both scheduled within the calendarapplication interface 1210. The travel time block 1230 reserves, withinthe calendar application interface 1210, the identified time window fortraveling. As noted above, in addition to reserving a time block toaccount for the travel time, the travel time block 130 provides the userwith directions from the geographic location of the first appointment1215 to the geographic location of the second appointment 1220.

FIG. 12C illustrates an exemplary UI 1200C used to allow the user toschedule a third appointment within the calendar application interface1210 using the process 1100. In one implementation, the UI 1200C ispresented to the user in response to the user selecting (e.g., clickingon) a “new appointment” icon within the calendar application interface1210. In another implementation, the UI 1200C is presented to the userin response the user selecting (e.g., clicking on) one of the timewindows (e.g., 11:00 am to 11:30 am window) appearing within thecalendar application interface 1210. In either case, the UI 1200Cincludes various fields for gathering information about the thirdappointment. The various fields include a subject field 1235, a locationfield 1240, a starting time field 1245, an ending time field 1250, and areminder field 1255.

The subject field 1235 allows the user to identify the subjectassociated with the third appointment. For example, as shown, thesubject associated with the third appointment includes “appointment withDr. Jones.” The location field 1240 allows the user to identifying thegeographic location of the third appointment. For example, as shown, thegeographic location of the new appointment is at “11208 Camp Rd.Bethesda, Md., 20854.” The starting time and ending time fields 1245,1250, identify the starting date/time and ending date/time associatedwith the third appointment, respectively. For example, as shown, thestarting date/time of the third appointment is on Thursday, Apr. 23,2002 at 11:00 am and the ending date/time of the third appointment is onThursday Apr. 23, 2003 at 11:30 am. The reminder field 1255 allows theuser to set a reminder for the appointment. For example, as shown, theuser has specified a reminder 15 minutes in advance of the appointmenttime.

To schedule the appointment, the user may click on “save and close” icon1260. This causes the appointment information to be saved within thecalendar application, and the appointment information to be presented onthe calendar application interface 1210 between the first and secondappointments 1215 and 1220, as shown in FIG. 12D. However, before or atthe time of scheduling the third appointment 1265, the calendarapplication again uses the process 1100 to determine whether the timingof the third appointment 1265 present a conflict (e.g., absence ofsufficient travel time) with the already scheduled first and secondappointments 1215, 1220.

To this end, the calendar application automatically identifies a firstroute extending from the geographic location of the first appointment1215 to the geographic location of the third appointment 1265 andidentifies a first travel time associated with the first route.Similarly, the calendar application automatically identifies a secondroute extending from the geographic location of the third appointment1265 to the geographic location of the second appointment 1220 andidentifies a second travel time associated with the second route. Thecalendar application then compares the first travel time with the timegap between the first and third appointments 1215, 1265 and similarlycompares the second travel time with the time gap between the third andsecond appointments 1265, 1220.

If the first travel time exceeds the time gap between the first andthird appointments 1215, 1265 or the second travel time exceeds the timegap between the third and the second appointments 1265, 1220, thecalendar application alerts the user before or at the time of acceptingthe third appointment 1265 at the requested time. As such, the userimmediately realizes the conflict and is permitted to schedule the thirdappointment 1265 at another time to avoid the conflict. For example, andas shown, the calendar application generates a pop-up window 1270informing the user of the conflict.

Alternatively, if the first travel time does not exceed the time gapbetween the first and third appointments 1215, 1265 and the secondtravel time also does not exceed the time gap between the third andsecond appointments 1265, 1220, the calendar application schedules thethird appointment 1265 at the requested time.

Although FIG. 9B illustrates some of the suggestions that may be offeredto the user to avoid the conflict between two appointments, othersuggestions also are possible. For example, upon determining that twoappointments are conflicting (e.g., there is an absence of sufficienttravel time from the first appointment location to the secondappointment location), the calendar application may offer to the user todefault to a telephone or video conference to avoid the conflict. Inkeeping with the example described about with respect to FIG. 9B, uponrealizing that the amount of unscheduled time between the firstappointment and the second appointment is less than the travel timebetween the two, the calendar application may offer to the user toconduct either the first appointment or the second appointment viatelephone.

Along these lines, at a time of scheduling an appointment, the user maybe presented with an option to specify whether an appointment is to beconducted via a teleconference or a video conference. If so, thecalendar application does not take into account that appointment forpurposes of reserving a time block to account for the travel time. Toillustrate, assume that the user has three appointments within theuser's calendar on a particular day. The first appointment is to beconducted live at 10:00 am, the second appointment is to be conductedvia a telephone conference at 11:00 am, and the third appointment is tobe conducted live at 12:00 pm. The calendar application realizes thatthe second appointment is a teleconference or a video conferenceappointment, and, as such, the calendar application does not reserve atime block for travel time between the first appointment and the secondappointment and similarly between the second appointment and the thirdappointment.

Instead, the calendar application reserves a time block to account fortravel time from the first appointment to the third appointment. That isthe calendar application intentionally disregards the second appointmentfor purposes of reserving a time block to account for the travel time.In one implementation, the user is informed that the travel time betweenthe first and third appointment impinges on the scheduled secondappointment that takes place via a teleconference, for example. And, theuser is presented with an option to schedule the travel before, during,or after the intervening teleconference appointment.

In a slightly different implementation, instead of the user explicitlyspecifying that the appointment is a teleconference one, the calendarapplication infers such conclusion from the information associated withthe appointment. In one example, if there is a dial-in number and/or apin number associated with the appointment and thus, is locationindependent, the calendar application concludes that the appointment isto be conducted via a telephone, and, as such, does not take intoaccount the appointment for purposes of identifying a travel time. Inone implementation, the calendar application confirms with the user asto whether the appointment is indeed to be conducted via a telephone toreduce errors.

Similar to the notion of recognizing and accounting for telephone and/orvideo conference appointments, the calendar application also mayrecognize certain keywords (e.g., airports, flights) or locations (e.g.,airports) associated with a calendar event, and may have a particularsetting to set aside time in addition to the travel time to account forcertain routine activities (e.g., going through security). Similarly,the calendar application may set aside time to account for otherfactors, such as, for example, time needed to get from the car to ameeting. In keeping with the example described above with respect toFIG. 9B, the calendar application notifies the user that the travel timebetween two appointments is 130 minutes (120 minutes of travel time plusan additional 10 minutes to get from the car to the meeting). As such,the calendar application reserves a time block for 130 to account forthe time needed for the user to get from the car to the meeting.

In another implementation, the calendar application cancels or modifiesthe already scheduled travel time block upon determining that the userwishes to cancel an appointment used for the estimation of the traveltime block. FIG. 12E illustrates an exemplary process 1200E used by thecalendar application to cancel and/or modify the travel time block uponreceiving an indication from the user to cancel an appointment that isused to estimate the travel time block.

The process 1200E includes receiving a notification of an appointmentcancellation (1210E). In keeping with the example described with respectto FIG. 12D, the calendar application may receive a notification thatthe first appointment 1215 with the patent attorney Karl Renner shouldbe canceled. Upon receiving such an indication, the calendar applicationidentifies the travel time block that is based on the canceledappointment (1215E). Toward this end, the calendar applicationidentifies the travel time block 1230 that is reserved for the traveltime between the first appointment 1215 and the second appointment 1220.And, the calendar application either cancels or modifies the travel timeblock (1220E).

In one example, if the only remaining appointment is the secondappointment 1220, the calendar application cancels the travel time block1230. However, and as shown in FIG. 12D, if there is a third appointment1265, the calendar application modifies the travel time block such thatit is based on the third appointment 1265. Although, the thirdappointment 1265 is shown in FIG. 12D to take place after the firstappointment 1215, it is to be understood that the third appointment 1265can take place before the first appointment 1215. In either case, thecalendar application identifies the new travel time block and informsthe user of the same (1225E).

Other implementations are contemplated. For example, in another generalaspect and as described in more detail below with respect to FIG. 13,the concepts described herein also relate to a system that dynamicallyupdates appointment information within a calendar application based onthe current location of the user scheduled to participant in anappointment. The system identifies the current location of the user, andbased on the current location of the user the system approximates thearrival of the user to the geographic location of the user's nextappointment. To do so, the system may take into account the user'smodality of travel. The modality of travel may include driving, walking,public transportation, and/or other means of traveling, such as,bicycling. Based on the estimated arrival time, the system may informthe user that the user is running late to the meeting. Similarly, thesystem may inform other participants of the appointment, thereby savingthe remaining participants of waiting for the user.

By way of example, GPS or other location-based information about atleast one of the participants in the appointment can be used toautomatically (e.g., on the fly) update the appointment in theparticipant's electronic calendar application (e.g., MicrosoftExchange). To this end, if the participant is 20 minutes walk or driveaway from and just underway to an appointment that is due to start now,the appointment can be rescheduled to start in 20 minutes, saving theremaining participants from waiting. In one implementation, to determinethe travel time of the participant to the geographic location of theappointment real time traffic and travel data can be leveraged toaccount for the participant's travel time to a distant meeting.Similarly, this information can be used to alarm the participant as towhen he/she needs to depart in order to arrive at the geographiclocation of the appointment on time.

In another general aspect and as described in more detail with respectto FIG. 18, the concepts described herein also relate to a system foridentifying that a user's appointment has been delayed and dynamicallyrescheduling the user's subsequent appointments to account for thedelay. To illustrate, assume that the doctor is running late to his orher first patient meeting and as such the first appointment that is dueto start at 9:00 am and last until 9:15 am actually starts at 9:15 am.The system realizes this delay, identifies subsequent appointmentswithin the doctor's calendar, and automatically reschedules theremaining appointments. For example, the system postpones eachappointment by 15 minutes. As such the next appointment that was due tostart at 9:15 am and end at 9:30 am will be postponed such that it willstart at 9:30 am and end at 9:45 am. The system also may inform otherparticipants of the appointment, thereby saving the remainingparticipants of waiting for the user. This scenario can be useful in,for example, allowing patients to delay their arrivals at doctor'soffices if doctors are running late.

FIG. 13 illustrates an exemplary process 1300 used for alerting one ormore users who are scheduled to participate in an appointment ofpossible delay of the at least one of the participants to theappointment. In keeping with the previous example and for convenience,the calendar application described with respect to FIGS. 1A and 1B isreferenced as performing the process 1300. In particular, the process1300 involves the calendar application interface 110, the firstappointment 115, and the second appointment 120.

Although the process 1300 is described below as being performed by thecalendar application, it should be understood that it can be performedby a navigation application. Alternatively or additionally, some of theactions within the process 1300 may be performed by the calendarapplication and others may be performed by the navigation application.Alternatively or additionally, the process 1100 may be performed by anapplication that acts as an interface between the navigation andcalendar applications.

The process 1300 may be activated either manually or automatically. Themanual activation may be through a setting (e.g., an icon) appearing inthe calendar application or a navigation application. The process 1300includes the calendar application identifying an appointment within acalendar application (1305) and identifying a geographic location of theappointment and the time at which the appointment is due to start(1310). To identify the geographic location of the appointment, in oneimplementation, the calendar application references a location fieldassociated with the appointment. Alternatively or additionally, thecalendar application may reference other fields associated with theappointment and may search for keywords identifying an address. In oneexample, the calendar application searches for a zip code, city, and/orstate name to identify an address. In this manner, the calendarapplication identifies that the geographic location of, for example, thefirst appointment 115 is at “1425 K Street, NW, Washington D.C. 20005.”

To identify the time associated with the appointment, in oneimplementation, the calendar application references a time field withinthe calendar application to identify the time during which theappointment is scheduled to take place. Alternatively or additionally,the calendar application may reference other fields associated with theappointment and may search for keywords identifying time of eachappointment. In one example, the calendar application searches for keywords, such as “starting time,” “ending time,” “from 10:00 am to 11:00am,” and other possible texts indicative of the time of the appointment.In this manner, the calendar application identifies that the timeassociated with, for example, the first appointment 115 is from “10:00am to 11:00 am.”

The process 1300 also includes the calendar application identifyingparticipants of the appointment (1315). In one example, the calendarapplication searches participant field to identify the participants ofthe appointment. To this end, the calendar application identifies atleast two participants (e.g., a first participant and a secondparticipant). The first participant may be the owner of the calendarapplication referenced in FIGS. 1A and 1B, for example.

After identifying the participants of the appointment, the calendarapplication identifies, at a time before the appointment time, ageographic location of one of the identified participants (1320). Forexample, the calendar application identifies the geographic location ofthe first participant (e.g., the owner of the calendar applicationreferenced in FIGS. 1A and 1B).

In some configurations, the calendar application automaticallyidentifies a geographic location of one of the identified participantsat a predetermined time before the appointment. For instance, thepredetermined time may be immediately preceding the appointment time ormay be, for example, fifteen minutes prior to the appointment. Thepredetermined time may be at a user-specified or a system-specified timein advance of the appointment time. In other configurations, thecalendar application identifies a geographic location of one of theidentified participants in response to a user requesting the calendarapplication to identify the geographic location. An administrator, anappointment participant, an organizer of the appointment, or anotheruser related to the appointment may inspire the calendar application toidentify the geographic location. For example, a first appointmentparticipant may contact an assistant of a second appointment participantto determine whether the second appointment participant will beattending the appointment in person, by telephone, or whether a needexists to reschedule the appointment. In this example, the assistant ofthe second appointment participant may inspire the calendar applicationto identify the geographic location of the second appointmentparticipant to obtain the information requested by the first appointmentparticipant.

In one implementation, the calendar application automatically determinesthe present location of the first participant using location providingtechnology implemented in the client device of the first participant. Ifthe client device is equipped with multiple location providingtechnologies, the calendar application may use the technology thatprovides the more accurate information about the present location. Inone example, the client device includes a mobile device that isGPS-enabled, and the calendar application automatically determines thepresent location of the first participant based on the GPS position ofthe client device. In another example, the present location of the firstparticipant is automatically determined by registering the client devicewith a host (e.g., a Session Initiation Protocol (“SIP”)) server. Theclient device may provide information to the host that is used to derivelocation information. For example, the host may derive locationinformation based on how the client device is accessing the network(e.g., as identified by source IP address or another packet identifier).

In yet another alternative, the present location of the firstparticipant is automatically determined from a profile associated withthe first participant. The profile and/or contact information mayindicate a predetermined home and/or office location. In one specificexample, the user of a client office computer has previously stored inhis/her profile the location of the first participant's office. Thus,the calendar application uses the profile to determine the officelocation.

After identifying the geographic location of the first participant, thecalendar application identifies a route extending from the geographiclocation of the first participant to the geographic location of theappointment (1325). To this end, in one example, the calendarapplication is equipped with navigation capabilities. Alternatively oradditionally, the calendar application communicates with a navigationapplication that is logically separate from the calendar application toidentify the route extending from the geographic location of the firstparticipant to the geographic location of the appointment. As notedabove, the U.S. patent application Ser. No. 11/618,069, filed on Dec.29, 2006 and entitled “Communicating Appointment And/Or MappingInformation Among A Calendar Application And A Navigation Application,”describes in detail concepts that effect communications of appointmentinformation from a calendar application to a navigation application forgenerating a travel route and a travel time associated therewith.Therefore, the manner in which communications between the calendarapplication and the navigation application takes place is not describedhere in more detail.

In either case, the calendar application also identifies the travel timeassociated with the route (1330). For instance, the calendar applicationmay identify a travel time associated with the route by using its ownnavigation capabilities or by communicating with a navigationapplication that is logically separate from the calendar application.The calendar application may identify the travel time associated withthe route by determining a distance of the mute and determining anaverage travel time corresponding to traveling the determined distance.

The calendar application also may use historical data in identifying thetravel time associated with the route. For example, if the participanthas previously traveled along the route, the calendar application mayuse an actual time (or an average of actual times) with which theparticipant previously traveled the route. The calendar application alsomay use historical data related to users other than the participant. Thecalendar application may determine an average time that it took for allknown users to travel the route.

In identifying the travel time, the calendar application may considerthe time of day, the date, current travel conditions, or any otherinformation that may impact travel time. For example, the calendarapplication may, when the travel is during rush hour, identify a traveltime that is longer than a travel time when the travel is not duringrush hour. The calendar application also may identify a travel time thatis longer than typical when the calendar application determines that anevent (e.g., a parade, a car accident, road work, etc.) is occurringalong the route. The calendar application further may account for themodality of travel in identifying the travel time associated with theroute.

FIG. 14 illustrates an exemplary process for identifying a travel timebased on modality of travel. The calendar application identifies amodality of travel of the participant to the geographic location of theappointment (1410). To do so, in one implementation, the calendarapplication presents a UI to solicit, from the first participant, suchinformation.

FIG. 15 illustrates an exemplary UI 1500 that is used to solicit, fromthe participant of the appointment, information regarding the modalityof travel. The UI 1500 requests that the first participant specifies orconfirms the modality of travel and to this end presents to the userseveral options. The several options include walking, driving, publictransportation, and others. The “others” option may be selected if thefirst participant's choice of travel does not appear among one of thewalking, driving, or public transportation. For example, the user choiceof travel may be via a bicycle. To this end, the selection of the“others” option generates another UI allowing the first participant tospecify the modality of travel (e.g., a bicycle).

Referring again to FIG. 14, based on the modality of travel, thecalendar application identifies travel time associated with the route(1420). In identifying the travel time, the calendar application maytake into account the speed of traveling. The speed of traveling mayinclude an average speed based on the specified modality of travel oractual speed of travel. The calendar application may determine thatactual speed of traveling by soliciting it from the user orautomatically gleaning it from the client device.

To identify the travel time, the calendar application also may take intoaccount traffic conditions. The traffic conditions may include currenttraffic flow or historic traffic flow. The current traffic flow may bedetermined by contacting a server that includes traffic data to obtaincurrent road conditions between the user's appointments.

Referring again to FIG. 13, the calendar application also identifies theamount of time remaining until the appointment time at which theappointment is due to start (1340). The time remaining may be determinedby identifying a present or current time and subtracting the present orcurrent time from the starting time of the appointment. Unless thepresent or current time is after the appointment time, the amount oftime remaining until the appointment time is a positive number and maybe used to determine whether the first participant is likely to arriveat the appointment on time.

Based on the time remaining until the appointment, the calendarapplication determines whether the travel time exceeds the amount oftime remaining until the appointment (1345). For example, the calendarapplication may compare the travel time to the amount of time remaininguntil the appointment and determine whether the travel time is greaterthan the amount of time remaining until the appointment based on thecomparison. The calendar application may subtract the travel time fromthe amount of time remaining until the appointment. If the result ispositive, the calendar application determines that the travel time doesnot exceed the amount of time remaining until the appointment. If theresult is negative, the calendar application determines that the traveltime does exceed the amount of time remaining until the appointment.

If it is determined that the travel time exceeds the remaining time, thecalendar application sends a message (1350). For instance, the calendarapplication may alert the first participant by displaying an alertdisplay to the first participant that informs the first participant ofthe same. The calendar application also may send a message to otherparticipants of the appointment indicating that the first participantlikely will be late for the appointment. The message may be a reschedulerequest from the first participant that does not specify the reason thatthe first participant needs to reschedule the meeting (e.g., that thefirst participant is running late). The calendar application may send amessage to other users that are not participants of the appointment. Forexample, the calendar application may send a message to the firstparticipant's assistant a family member of the first participant,participants scheduled to have a subsequent appointment with the firstparticipant after the appointment, etc. In this example, the message mayindicate that the first participant may be running late.

FIG. 16 illustrates an exemplary alert interface 1600 used for alertingthe first participant that he or she is not likely to arrive at theappointment location on time. In keeping with the previous example andfor convenience, the calendar application described with respect toFIGS. 1A and 1B is referenced in describing the alert display 1600.

The alert interface 1600 informs the first participant that it iscurrently 11:30 am and the first participant is still at the firstappointment location (e.g., at “1425 K St. NW, Washington D.C., 20005”)and the next appointment of the first participant takes place at noonand is located at United States Patent and Trademark Office. The alertinterface 1600 then alerts the first participant that the travel time tothe next appointment exceeds the timing remaining until the appointmenttime. Along these lines, the first participant may be presented with alist of suggestions helping the first participant to avoid suchpotential conflict.

FIG. 17 illustrates an exemplary alert interface 1700 showing optionsthat are presented to the first participant to avoid the schedulingconflict. The options include (1) sending a message to a secondparticipant informing him or her of the estimated arrival time of thefirst participant, (2) rescheduling the appointment, and/or (3) changingthe modality of travel. Sending a message to the second participantincludes informing the second participant of the geographic location ofthe first participant and estimated arrival time of the firstparticipant. In this manner, the second participant knows that the firstparticipant is running late and does not have to wait for the firstparticipant at the meeting location and can, for example, delay his/herarrival to the meeting location accordingly. To this end, the secondparticipant may even be directed to reschedule the appointment toaccount for estimated arrival time of the first participant.

In implementations in which the calendar application sends a message tothe other participants, the message may be integrated with the addressbook or the calendar information to alert other users. For example, acalendar entry for the appointment on a calendar associated with anotherparticipant in the appointment may be updated to include the messagethat the first participant is running late. The message also may be sentto other participants of the appointment by accessing contactinformation for the other participants using the first participant'saddress book information and sending the message using the accessedcontact information.

The alert interface 1700 also may include telephone numbers or othercontact information for the other participants of the appointment. Thefirst participant may view the telephone numbers or other contactinformation and contact the other participants to inform the otherparticipants that the first participant will likely be late for theappointment.

The options also include rescheduling the appointment. Rescheduling theappointment, for example, includes postponing the appointment time to alater time to thereby allow the first participant to timely arrive atthe geographic location of the appointment. To reschedule theappointment, in one implementation, the calendar application accesses acalendar application of the second participant to identify the timeavailability of the second participant, and based on the timeavailability of the first and second participant the calendarapplication reschedules the appointment at a mutually convenient timefor the first and second participants.

The options for avoiding the conflict also include changing the modalityof travel. Selection of this option may result in generation of anotherUI instructing the first participant to change the current travel modeto a different one. For example, the first participant may be instructedto change the travel mode from public transportation to driving.

In a slightly different implementation, instead of the first participanthaving to select one of the options presented in the UI 1700, thecalendar application automatically selects one of the options based onthe user preferences. For example, upon determining that the firstparticipant is running late to the appointment, the calendar applicationautomatically sends a message to the other participants informing themthat the first participant is running late along with the estimatedarrival time. For another example, upon determining that the firstparticipant is running late to the appointment, the calendar applicationautomatically reschedules the appointment at a convenient time for theattending users. In yet another example, upon determining that the firstparticipant is running late to the appointment, the calendar applicationautomatically informs the first participant to change the modality oftravel and/or travel faster using the current modality of travel totimely arrive at the appointment location.

In some implementations, if it is determined that the travel time doesnot exceed the amount of time remaining until the appointment, furtherprocessing may be performed. For example, the calendar application maysubtract travel time from the amount of time remaining until theappointment to determine the amount of time by which the firstparticipant should leave to arrive at the appointment on time. Thecalendar application may compare the amount of time by which the firstparticipant should leave to arrive at the appointment on time to athreshold and, if the amount of time by which the first participantshould leave to arrive at the appointment on time is less than thethreshold, the calendar application may send a reminder to the firstparticipant to remind the first participant to leave for theappointment. The reminder may include the amount of time by which thefirst participant should leave to arrive at the appointment on time.

In some implementations, techniques described above with respect to FIG.13 may be repeated. For instance, the techniques described with respectto FIG. 13 may be periodically repeated as the first participant travelsto the appointment. In this example, updated information regarding thefirst participant's current location and the current time may be used.

In another implementation and as noted above, the concepts describedherein also relate to a process for identifying that a user'sappointment has been delayed and also for dynamically rescheduling theuser's subsequent appointments to account for such a delay. FIG. 18provides an example of such a process.

FIG. 18 illustrates an exemplary process 1800 used for dynamicallyrescheduling subsequent appointments of the user (e.g., the firstparticipant) based on the determination that one of the appointments ofthe user (e.g., the first participant) has been delayed. Some of theactions performed by the process 1800 are similar to the actionsperformed by the process 1300. As such and for purposes of brevity,these actions are not described here in more detail.

The process 1800 includes the calendar application identifying anappointment within a calendar application (1805) and identifying anappointment time at which the appointment is due to start and due to end(1810). The actions (1805 and 1810) are similar to those (1305 and 1310)described above with respect to the process 1300, and, as such, they arenot described here in more detail.

The process 1800 also includes the calendar application identifying thatthe appointment has been delayed for a certain fixed amount of time(1815). For example, the calendar application identifies that thestarting time of the appointment has been delayed due to one of theparticipants running late to the appointment. Alternatively oradditionally, the calendar application may identify that the duration ofthe appointment has been extended beyond the scheduled ending time by acertain fixed amount of time. For instance, in one implementation, oneof the participants of the appointment notifies the calendar applicationof such delay. In another implementation, the calendar applicationdetermines such delay based on the locations of the participants. Forexample, if the participant appears to still be at the location of theappointment instead of on the road traveling to the next appointment,the calendar application determines that the appointment has lastedlonger than previously scheduled.

Along these lines, the calendar application identifies the amount oftime the appointment has been delayed and also identifies the subsequentappointments within the calendar application (1820). Based on the amountof time the appointment has been delayed and the timing of thesubsequent appointments, the calendar application determines that a needfar rescheduling other appointments exists and confirms with theparticipant the desire to reschedule the other appointments (1825). Thecalendar application then automatically reschedules the subsequentappointments within the calendar application such that the starting timeof each of the subsequent appointments is postponed to account for thedelay associated with the current appointment (1830). The calendarapplication also may notify the participants of each of the subsequentappointments and inform them of such change, so that they can changetheir schedule according.

Other implementations are also contemplated.

1. A computer-implemented method, comprising: identifying a geographiclocation and a start time associated with an appointment in a calendarapplication; identifying a travel route for a participant traveling tothe geographic location of the appointment, the travel route beingassociated with a travel condition; detecting a change in the travelcondition; estimating, based on the detected change, a timecorresponding to an arrival of the participant at the geographiclocation of the appointment; determining that the estimated arrival timeoccurs subsequent to the start time of the appointment; and transmittingan alert to the participant that the estimated arrival time occurssubsequent to the start time of the appointment.
 2. The method of claim1, wherein the initial travel condition comprises (i) a condition of aroad along the travel route or (ii) a flow of traffic along the travelroute.
 3. The method of claim 1, further comprising: identifyingalternate travel routes for the participant traveling to theappointment; and estimating, for the alternate travel routes,corresponding times associated with the arrival of the participant atthe geographic location of the appointment.
 4. The method of claim 3,further comprising: determining that the estimated arrival time for oneof the alternate travel routes occurs at or prior to the start time ofthe appointment; and transmitting information associated with thecorresponding one of the alternate travel routes to the participant. 5.The method of claim 3, further comprising: determining that theestimated arrival times for a plurality of the alternate travel routesoccur at or prior to the start time of the appointment; selecting one ofthe plurality of alternate travel routes based on the estimated arrivaltimes; and transmitting information associated with the selected one ofthe alternate travel routes to the participant.
 6. The method of claim3, further comprising: determining that the estimated arrival timesassociated with the alternate travel routes occur subsequent to thestart time of the appointment.
 7. The method of claim 6, furthercomprising selecting one of the alternate travel routes based on theestimated arrival times; and transmitting, to the participant,information identifying the detected change in the travel condition andthe selected one of the alternate travel routes to the participant. 8.The method of claim 3, wherein the estimated arrival time associatedwith the selected one of the alternate travel routes is a minimum of theestimated arrival times.
 9. The method of claim 1, further comprising:selecting an updated start time for the appointment, the updated starttime occurring at or subsequent to the estimated arrival time; andtransmitting the updated start time to at least the participant of theappointment.
 10. A computer-implemented method, comprising: identifyinga geographic location and a start time associated with an appointment ina calendar application; identifying a travel route for a participanttraveling to the geographic location of the appointment; determiningthat a distance between a geographic location of the participant and ageographic location along the travel route exceeds a threshold value;selecting an alternate travel route for the participant, in response tothe determination that the distance exceeds the threshold value;estimating, based on the updated travel route, a time corresponding toan arrival of the participant at the geographic location of theappointment; determining that the estimated arrival time occurs at orprior to the start time of the appointment; and transmitting informationassociated with the alternate travel route to the participant.
 11. Themethod of claim 10, further comprising: determining that the estimatedarrival time occurs subsequent to the start time of the appointment. 12.The method of claim 11, further comprising: transmitting, to theparticipant, an alert that the estimated arrival time of the alternatetravel route occurs subsequent to the start time of the appointment. 13.The method of claim 11, further comprising: selecting an updated starttime for the appointment, the updated start time occurring at orsubsequent to the estimated arrival time; and transmitting the updatedstart time to at least the participant of the appointment.
 14. Themethod of claim 10, further comprising: determining that the distancebetween the geographic location of the user and the geographic locationalong the travel route fails to exceed a threshold value.
 15. The methodof claim 12, further comprising: determining that the geographiclocation of the user fails to correspond to the geographic locationalong the travel route; and transmitting, to the participant,information instructing the participant to travel to the geographiclocation along the travel route.
 16. A computer-implemented method,comprising: identifying a start time and a geographic locationassociated with an appointment in a calendar application; identifying atravel route extending between a geographic location of a participant ofthe appointment and the geographic location of the appointment;determining a modality of travel for the travel route; computing atravel time associated with the travel route, the travel time comprisinga first travel time corresponding to the modality of travel, and asecond travel time incidental to the modality of travel; estimating,based on the travel time, a time corresponding to an arrival of theparticipant at the geographic location of the appointment; determiningthat the estimated arrival time occurs subsequent to the start time ofthe appointment; and transmitting, to the participant, an alert that theestimated arrival time occurs subsequent to the start time of theappointment.
 17. The method of claim 16, wherein determining themodality of travel comprises: enabling the participant to select themodality of travel for the identified route.
 18. The method of claim 16,wherein determining the modality of travel comprises: identifying themodality of travel based on a distance along the travel route.
 19. Themethod of claim 16, wherein computing the travel time comprises:calculating the first travel time based on the modality of travel and adistance along the travel route between the geographic location of theparticipant and the geographic location of the appointment.
 20. Themethod of claim 16, wherein determining the modality of travelcomprises: determining a plurality of modalities of travel for thetravel route.
 21. The method of claim 20, wherein computing the traveltime comprises: calculating first travel times corresponding to themodalities of travel; and computing second travel times corresponding totransitions among the modalities of travel.
 22. The method of claim 16,wherein the computing the travel time comprises: computing the traveltime as a sum of the first travel time and the second travel time. 23.The method of claim 16, wherein: the modality of travel comprises anautomobile; the first travel time comprises a time necessary to travel adistance along the travel route using the automobile; and the secondtravel time comprises a time associated with transitioning to or fromthe automobile.
 24. The method of claim 16, wherein: the modality oftravel comprises an aircraft; the first travel time comprises a timenecessary to travel a distance along the travel route using theaircraft; and the second travel time comprises a time associated withtransitioning to or from the aircraft.
 25. The method of claim 16,further comprising: selecting an updated start time for the appointment,the updated start time occurring at or subsequent to the estimatedarrival time; and transmitting the updated start time to at least theparticipant of the appointment.
 26. A computer-implemented method,comprising: identifying a geographic location and a start timeassociated with an appointment in a calendar application; detecting adelay in a departure time of a participant traveling to the geographiclocation of the appointment; identifying a travel route for theparticipant, in response to the delay in the departure time; estimating,for the travel route, a time corresponding to an arrival of theparticipant at the geographic location of the appointment; determining,with a processor, whether the estimated arrival time occurs at or priorto the start time of the appointment; and generating, with a processor,a signal to transmit the travel route to the participant, when theestimated arrival time occurs at or prior to the start time.
 27. Themethod of claim 26, wherein the identifying comprises: identifying, inresponse to the detected delay, a plurality of travel routes for theparticipant traveling to the geographic location of the appointment. 28.The method of claim 27, further comprising: estimating travel times andarrival times corresponding to the plurality of travel routes.
 29. Themethod of claim 28, further comprising: identifying a subset of thetravel routes associated with arrival times occurring at or prior to thestart time of the appointment; selecting one of the subset of travelroutes for transmission to the participant; and generating a signal totransmit the selected travel route to the participant.
 30. The method ofclaim 28, wherein the selected travel route is associated with a minimumof the estimated travel times.
 31. The method of claim 26, wherein thedelay in the departure time corresponds to a delay in a completion timeof the appointment.